package cliente;

import dados.Dado;

import java.net.Socket;
import java.io.ObjectOutputStream;
import java.io.ObjectInputStream;

import java.io.IOException;
import java.net.UnknownHostException;

public class ClientSocket {
	
    private ObjectOutputStream saida;
    private ObjectInputStream entrada;
	private Socket conexao;
	public Messenger messenger;
	
	ClientSocket(Messenger messenger) {
		conectar(Messenger.HOST);
		this.messenger = messenger;
	}
	
	private void prepararPassagemDeDados(Socket conexao) {
		try {
			this.entrada = new ObjectInputStream(conexao.getInputStream());
			this.saida = new ObjectOutputStream(conexao.getOutputStream());
		} catch (IOException e) {
			messenger.excecao("IOException na preparação da passagem dos dados");
			e.printStackTrace();
		}
	}
	
	public void conectar(String host) {
		try {
			conexao = new Socket(host, 7001);
		} catch (UnknownHostException e) {
			messenger.excecao("Host desconhecido");
			e.printStackTrace();
		} catch (IOException e) {
			messenger.excecao("IOException na criação do Socket");
			e.printStackTrace();
		}
		prepararPassagemDeDados(conexao);
	}
	
	public void enviar(Dado dado) {
		try {
			saida.writeObject(dado);
		} catch (IOException e) {
			messenger.excecao("IOException no método enviar()");
			e.printStackTrace();
		}
	}
	
	public Dado receber() {
		Dado entrada = null;
	 	
		try {
			entrada = (Dado) this.entrada.readObject();
		} catch (IOException e) {
			messenger.excecao("IOException no método recever()");
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			messenger.excecao("Erro na classe recebida do servidor");
			e.printStackTrace();
		}
		
		return entrada;
	}
}

